Playing with IPX Not without limits is Novell's SHGEN utility. When creating an IPX shell for your workstations you may need to use options that do not exist. The lack of the ability to "create" your own options is a limitation of IPX that has been with us for many years. Surprisingly SHGEN, does not offer a means to create your own options. In the following short article I will offer one method of creating your own options. The method I have happened upon involves modifying one of the existing option settings. Now, these modifications involve the use of DEBUG or other similar editor. For this example, DEBUG will be used. First, generate an IPX shell (IPX.COM) for your chosen network card. Second, the parameter table needs to be located. This table includes the Interrupt setting (IRQ), I/O address, RAM address, and DMA channel. No network card uses all these options at once, so only a maximum of three of them will need to be altered. Now, to locate the table the pattern to search for needs to be ascertained: Run IPX with the I option, for instance: D:\> ipx i Novell IPX/SPX V2.12 (C) Copyright 1985, 1988 Novell Inc. All Rights Reserved. LAN Option: Thomas-Conrad Corp. ARC-CARD Accel. V2.20B1 (891022) Hardware Configuration: IRQ = 2, Memory Base at D000:0 (IRQ 9) -or- E:\> ipx i Novell IPX/SPX V2.12 (C) Copyright 1985, 1988 Novell Inc. All Rights Reserved. LAN Option: 3Com 3C503 EtherLink II V2.30EC (880518) Hardware Configuration: I/O = 300h, INT = 3, DMA = 1, BNC Note the five characters following the line: "Hardware Configuration: " In the first "ipx i" the five characters are "IRQ =" and in the second, "I/O =". This five character pattern will be the basis for finding the option descriptions within IPX.COM. At this point use of DEBUG is needed: DEBUG IPX.COM at the - prompt, type: -scs:100 ffff 'IRQ =' {substitute for your pattern} you will receive a list of addresses, note the first one, it will be something like: 519B:29C0 the first part, 519B, is the segment, it can ignored for purposes of modifying IPX, the second part, 29C0, is the offset, this will be used for finding a table position to edit at the next - prompt, type: -dcs:29C0 (NOTE: Be sure to substitute your number for the 29C0 offset used here) You should see something similar to: 519B:29C0 49 52 51 IRQ 519B:29D0 20 3D 20 20 32 2C 20 4D-65 6D 6F 72 79 20 42 61 = 2, Memory Ba 519B:29E0 73 65 20 61 74 20 44 30-30 30 3A 30 20 28 49 52 se at D000:0 (IR 519B:29F0 51 20 39 29 00 00 00 00-00 00 00 00 00 00 00 D0 Q 9)............ 519B:2A00 00 02 00 00 00 00 00 FF-03 00 00 00 00 00 00 02 ................ 519B:2A10 00 49 52 51 20 3D 20 20-33 2C 20 4D 65 6D 6F 72 .IRQ = 3, Memor 519B:2A20 79 20 42 61 73 65 20 61-74 20 44 30 30 30 3A 30 y Base at D000:0 ...(listing should continue for a few more lines) In this listing are descriptions for two of the available IPX options. The second option will be the one edited, though the pattern used to edit the description will be viable for any of the options. Note that the second description indicates IRQ=3 and Memory Address D000:0. Say that an option is needed for IRQ=6 and Memory Address DC00:0, here are the commands to incorporate these changes: the line above "IRQ = 3" begins: 00 02 00 in the middle of the line find FF-03, the - is just for formatting of the output, the 03 is the IRQ number for this option; note how the actual option code is found before the textual description of the option to edit the 03 to 06: (once again, at the - prompt) -e 2A07 519B:2A07 03.06 next, redo the display command to see that the change has taken place: -dcs:29C0 519B:29C0 49 52 51 IRQ 519B:29D0 20 3D 20 20 32 2C 20 4D-65 6D 6F 72 79 20 42 61 = 2, Memory Ba 519B:29E0 73 65 20 61 74 20 44 30-30 30 3A 30 20 28 49 52 se at D000:0 (IR 519B:29F0 51 20 39 29 00 00 00 00-00 00 00 00 00 00 00 D0 Q 9)............ 519B:2A00 00 02 00 00 00 00 00 FF-06 00 00 00 00 00 00 02 ................ 519B:2A10 00 49 52 51 20 3D 20 20-33 2C 20 4D 65 6D 6F 72 .IRQ = 3, Memor 519B:2A20 79 20 42 61 73 65 20 61-74 20 44 30 30 30 3A 30 y Base at D000:0 Next, edit the Memory Address from D000:0 to DC00:0: -e 29F0 519B:29F0 D0.DC At this point the actual settings of this option are IRQ=6 and Memory Address=DC00:0 but the textual description is still indicating IRQ=3 and Memory Address D000:0 Optionally, to change this indication: -f 2A10 L1F 'IRQ = 6, Memory Base at D000:0' The "L1F" is a length directive indicating a length of 1F which is hexadecimal for 31, which is the length the characters between the 's; This length figure is something which must be calculated correctly and the editing of the textual description is not necessary to engage the actual operational changes in IPX, so, you may opt to not change the description If the network card uses DMA then it will be noted just after the IRQ used. The following example shows IRQ=3 and DMA=1: 6129:29E0 45 43 20 28 38 38 30 35-31 38 29 00 24 00 03 10 EC (880518).$... 6129:29F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 FF ................ 6129:2A00 03 00 00 FF 01 00 00 00-00 49 2F 4F 20 3D 20 33 .........I/O = 3 6129:2A10 30 30 68 2C 20 49 4E 54-20 3D 20 33 2C 20 44 4D 00h, INT = 3, DM 6129:2A20 41 20 3D 20 31 2C 20 42-4E 43 00 10 03 10 00 00 A = 1, BNC...... The end of the second line begins the IRQ indicator (FF). The next line indicates the IRQ used (03). Three bytes later there is a FF 01, this indicates DMA=1. By altering the second byte (01) the DMA channel can be changed. This option also uses an I/O address of 300h. At the end of the above's first line are the bytes 00 03 10. The first two bytes are the I/O address in low-high order (00 03). By altering these two bytes the I/O address can be changed. To change it to 350h for instance, the correct order would be (50 03). To make the changes final, use the W command at the next - prompt: -w To exit DEBUG use the Q command. SUMMING IT UP: Begin your search of IPX's option description table by using IPX's I option (i.e., "IPX I"). Ascertain the pattern to search for by finding the first five bytes after the label "Hardware Configuration: ". Search for the first instance of this pattern within IPX. Choose an option to edit. Find/Edit the DMA channel located 5 bytes before the pattern found. Find/Edit the IRQ located 9 bytes before the pattern found. Find/Edit the Memory Address located 18 bytes before the pattern found. Find/Edit the I/O Address located 28 bytes before the pattern found. Write the changes and exit DEBUG Note that the number of bytes before the pattern found may be different in future releases of NetWare or in early releases (pre v2.1) of NetWare. If you have any questions about these procedures, please contact me on CompuServe @ 70007,3430 or on the Internet at 70007.3430@compuserve.com. -By John T. McCann, author of the NetWare Supervisor's Guide -Special thanks to Bart Mellink of Cyco Automation 10/3/90 1300 wds